The present invention relates to a data communication method for use in data communications between computer systems connected via a network. The invention is particularly suitable for implementation of a low-overhead high-speed communication function necessary for parallel processing and the like.
In an interprocess communication in a distributed processing system or a parallel processing system employing a distributed memory architecture, a plurality of sender or transmission processes and a plurality of receiver or reception processes simultaneously exist for each node and it is necessary to transfer data from a sender process of each node to a receiver process of another node. In this operation, a process executed in each node ordinarily utilizes a virtual memory space. In contrast therewith, according to a network communication function to be achieved in a hardware level, data is only transferred from a sender node to a specified receiver node. Namely, in the hardware level, there is provided a function in which a receiver node is specified so as to transfer data thereto in a packet unit.
In general, to remove the gap between the software and the hardware, the following processing is executed by an operating system.
1) Buffering: According to this processing, on a receiver node side, when a receiver processing is not running (a receiver process having issued "receive" is generally set to a block (pause) state until data arrives), received data is once stored in a receiver or reception buffer in a kernel. After the receiver process is again set to an execution state, the data is copied from the buffer of the kernel onto a reception area of the process. PA1 2) Packet header addition and deletion: According to this processing, on a sender or transmission side, there is added header information to each packet to identify a sender process, a receiver process, etc. Moreover, on the receiver side, the header information is deleted from each packet. PA1 3) Segmentation and reassembly: When data to be transmitted has a large amount and exceeds a unit (an upper limit value of the packet) which can be transferred at a time through a network, segmentation is achieved to subdivide the transmission data into a plurality of packets. Reassembly is conducted to restore received data thus subdivided into original continuous data. PA1 4) Multiplexing and demultiplexing: In a demultiplexing operation, transmission requests issued from plural processes on the sender side are arranged in a sequential form to sequentially send the requests as packets onto the network. A demultiplexing operation supervises distribution of the packets received from the network to appropriate receiver processes. PA1 Problem 1) In the Japanese Patent Application Serial Nos. 3-56469 and 3-241094 previously filed (or U.S. patent application Ser. No. 07/853,427 filed on the basis of the Japanese Patent Application Ser. No. 3-241094), there has been employed a method in which data is transmitted with specification of a virtual address of the receiver side such that the virtual address is translated into a physical address by the receiver side. PA1 Problem 2) It is difficult to prevent data from being overwritten in a reception area. PA1 Problem 3) It is difficult to materialize means for establishing synchronization between transmission and reception with a minimized overhead matching the transfer performance of the high-speed network. PA1 Problem 4) It is difficult to sense or to detect an erroneous data transfer caused by a software bug or the like. PA1 Problem 5) In a case where the transfer data area occupies or astrides a plurality of pages, the processing becomes to be complex.
Details of the processing above have been described, for example, in pages 14 to 36 and pages 103 to 121 of "InternetwORking With TCP/IP Volume 2" written by Douglass E. Commer and David L. Stevens.
The processing including the buffering, the packet header addition and deletion, and the multiplexing and demultiplexing implements the general-purpose interprocess communication astriding nodes. However, the number of steps required for the processing to execute software is naturally added to the overhead associated with the communication processing. Particularly, to implement operations necessitating a high-speed intranode communication, for example, to achieve a high-speed image transfer or to accomplish an application such as parallel arithmetic processing, the communication overhead becomes a problem.